# Makefile para compilação do trabalho

# Macros das dependências
BIN      = $(addprefix bin/, executa_proc submete_proc lista_proc remove_proc termina_proc)
OBJ_EXEC = $(addprefix src/, list.o mqueue.o msg_handlers.o sig_handlers.o executa_proc.o)
OBJ_SUBM = $(addprefix src/, mqueue.o submete_proc.o)
OBJ_REMO = $(addprefix src/, mqueue.o remove_proc.o)
OBJ_LIST = $(addprefix src/, mqueue.o lista_proc.o)
OBJ_TERM = $(addprefix src/, mqueue.o termina_proc.o)

# Macros do compilador
CC      = gcc
CFLAGS  = -DNDEBUG
LDFLAGS = 

# Construir tudo
all: $(BIN)

# Limpar arquivos gerados
clean:
	rm $(BIN)
	rm src/*.o

# Recalcular dependências
depend:
	makedepend -m -Y src/*.c

# Construir binários
bin/%:
	$(CC) $(LDFLAGS) -o $@ $^

# Dependências do executa_proc
bin/executa_proc: $(OBJ_EXEC)

# Dependências do submete_proc
bin/submete_proc: $(OBJ_SUBM)

# Dependências do lista_proc
bin/lista_proc: $(OBJ_LIST)

# Dependências do remove_proc
bin/remove_proc: $(OBJ_REMO)

# Dependências do termina_proc
bin/termina_proc: $(OBJ_TERM)

# DO NOT DELETE

src/executa_proc.o: src/list.h src/job.h src/mqueue.h src/msg_handlers.h
src/executa_proc.o: src/sig_handlers.h src/debug.h
src/list.o: src/list.h src/job.h
src/lista_proc.o: src/mqueue.h src/job.h
src/mqueue.o: src/mqueue.h src/job.h
src/msg_handlers.o: src/msg_handlers.h src/mqueue.h src/job.h src/list.h
src/msg_handlers.o: src/debug.h
src/remove_proc.o: src/mqueue.h src/job.h
src/sig_handlers.o: src/sig_handlers.h src/list.h src/job.h src/debug.h
src/submete_proc.o: src/mqueue.h src/job.h src/debug.h
